'''
当您想回答关于JSON blob的问题时，它非常有用，而此JSON blob过大，无法放入LLM的上下文窗口中。
代理能够迭代地探索blob以找到需要回答用户问题的内容。

'''
import os
import yaml

from langchain.agents import (
    create_json_agent,
    AgentExecutor
)
from langchain.agents.agent_toolkits import JsonToolkit
from langchain.chains import LLMChain
# from langchain.llms.openai import OpenAI
from ChatQwen import ChatQwen
from langchain.requests import TextRequestsWrapper
from langchain.tools.json.tool import JsonSpec

# 读取yaml文档
with open("openapi.yaml", 'r', encoding='utf-8', errors='ignore') as f:
    data = yaml.load(f, Loader=yaml.FullLoader)
# 然后将数据转换为JSON格式
json_spec = JsonSpec(dict_=data, max_value_length=4000)
json_toolkit = JsonToolkit(spec=json_spec)

# 目前封装的ChatQwen接口模型暂不支持，最好使用OpenAI提供的服务
json_agent_executor = create_json_agent(
    llm=ChatQwen(),
    toolkit=json_toolkit,
    verbose=True
)

# 获取请求所需的POST参数
json_agent_executor.run("What are the required parameters in the request body to the /completions endpoint?")